// @Author YaoYa
// @Date 2024-11-14 18:03:00
// @Desc
package middlewares

import (
	"github.com/gin-gonic/gin"
	"github.com/opentracing/opentracing-go"
)

/*
1、改动了gin的拦截器，那就是这里
2、改动了grpc初始化添加 grpc拦截器，但是获取的变量是全局需要改的，需要时gin ctx传递进去的
3、更改源码client端 需要在grpc每个接口调用的时候更改ctx，加上ctx的值传递进去
4、svr端如何获取 api端的span？？？？后面解决

*/

func Trace() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		//每个连接进来生成StartSpan
		startSpan := opentracing.GlobalTracer().StartSpan(ctx.Request.URL.Path)
		defer startSpan.Finish()

		ctx.Set("tracer", opentracing.GlobalTracer())
		ctx.Set("parentSpan", startSpan)
		ctx.Next()

	}
}
